// vite.config.js
import { defineConfig, loadEnv } from "file:///D:/project/web/ash-fixed-assets/node_modules/vite/dist/node/index.js";
import path2 from "path";

// vite/plugins/index.js
import vue from "file:///D:/project/web/ash-fixed-assets/node_modules/@vitejs/plugin-vue/dist/index.mjs";

// vite/plugins/auto-import.js
import autoImport from "file:///D:/project/web/ash-fixed-assets/node_modules/unplugin-auto-import/dist/vite.js";
function createAutoImport() {
  return autoImport({
    imports: [
      //需要自动导入的库
      "vue",
      // 例如ref、reactive、computed，不导入直接使用const a=ref('1sd')
      "vue-router",
      //例如 useRouter、useRoute  不导入直接使用 const router = useRouter()
      "pinia"
      //例如 defineStore、useStore   不导入直接使用 const store = useStore()
    ],
    dts: false
    //dts：配置是否生成 TypeScript 的声明文件,false---不生成
  });
}

// vite/plugins/svg-icon.js
import { createSvgIconsPlugin } from "file:///D:/project/web/ash-fixed-assets/node_modules/vite-plugin-svg-icons/dist/index.mjs";
import path from "path";
function createSvgIcon(isBuild) {
  return createSvgIconsPlugin({
    iconDirs: [path.resolve(process.cwd(), "src/assets/icons/svg")],
    symbolId: "icon-[dir]-[name]"
    //指定symbolId格式 ,  /src/components/SvgIcon.vue   :xlink:href="symbolId"使用
  });
}

// vite/plugins/compression.js
import compression from "file:///D:/project/web/ash-fixed-assets/node_modules/vite-plugin-compression/dist/index.mjs";
function createCompression(env) {
  const { VITE_BUILD_COMPRESS } = env;
  const plugin = [];
  if (VITE_BUILD_COMPRESS) {
    const compressList = VITE_BUILD_COMPRESS.split(",");
    if (compressList.includes("gzip")) {
      plugin.push(
        compression({
          ext: ".gz",
          //表示生成的文件扩展名为 .gz
          deleteOriginFile: false
          //不删除原始文件
        })
      );
    }
    if (compressList.includes("brotli")) {
      plugin.push(
        compression({
          ext: ".br",
          algorithm: "brotliCompress",
          deleteOriginFile: false
        })
      );
    }
  }
  return plugin;
}

// vite/plugins/setup-extend.js
import setupExtend from "file:///D:/project/web/ash-fixed-assets/node_modules/unplugin-vue-setup-extend-plus/dist/vite.js";
function createSetupExtend() {
  return setupExtend({});
}

// vite/plugins/index.js
function createVitePlugins(viteEnv, isBuild = true) {
  const vitePlugins = [vue()];
  vitePlugins.push(createAutoImport());
  vitePlugins.push(createSetupExtend());
  vitePlugins.push(createSvgIcon(isBuild));
  isBuild && vitePlugins.push(...createCompression(viteEnv));
  return vitePlugins;
}

// vite.config.js
import axios from "file:///D:/project/web/ash-fixed-assets/node_modules/axios/index.js";
import fs from "fs";
var __vite_injected_original_dirname = "D:\\project\\web\\ash-fixed-assets";
function loadGlobalConfig() {
  const configPath = path2.resolve(__vite_injected_original_dirname, "./public/globalConfig.json");
  console.log("configPath", configPath);
  try {
    const rawData = fs.readFileSync(configPath, "utf-8");
    return JSON.parse(rawData);
  } catch (error) {
    console.error("\u274C \u8BFB\u53D6 globalConfig.json \u5931\u8D25\uFF0C\u4F7F\u7528\u9ED8\u8BA4\u914D\u7F6E:", error);
    return {
      ENV: "development",
      environments: {
        development: {
          title: "\u56FA\u5B9A\u8D44\u4EA7\u7BA1\u7406\u7CFB\u7EDF",
          base: "/api",
          baseApi: "http://192.168.1.99:19990",
          baseApi02: "http://192.168.1.240:8005"
        }
      }
    };
  }
}
var vite_config_default = defineConfig(({ mode, command }) => {
  const APP_CONFIG = loadGlobalConfig();
  const { baseApi, baseApi02 } = APP_CONFIG.environments[APP_CONFIG.ENV];
  console.log("baseApi", baseApi);
  console.log("baseApi02", baseApi02);
  const env = loadEnv(mode, process.cwd());
  const { VITE_APP_ENV } = env;
  const API_VERSION = env.VITE_APP_VERSION || "";
  return {
    base: VITE_APP_ENV === "production" ? "/" : "/",
    plugins: createVitePlugins(env, command === "build"),
    //使用插件，执行命令为build
    //路径解析
    resolve: {
      alias: {
        // 设置路径 ~ 指向项目根目录，@ 指向 src 目录。
        "~": path2.resolve(__vite_injected_original_dirname, "./"),
        // 设置别名
        "@": path2.resolve(__vite_injected_original_dirname, "./src")
      },
      // https://cn.vitejs.dev/config/#resolve-extensions
      extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"]
      //定义文件扩展名，在导入模块时可以省略这些扩展名。
    },
    server: {
      port: 9900,
      host: true,
      //否绑定本地所有 IP 地址
      open: true,
      hmr: true,
      proxy: {
        "/api/Interface": {
          target: baseApi02,
          changeOrigin: true,
          rewrite: (p) => p.replace(/^\/api\/Interface/, "/api/Interface")
        },
        "/api/basic": {
          //新版公共请求地址
          target: baseApi,
          changeOrigin: true,
          // logLevel: 'debug',
          rewrite: (p) => p.replace(/^\/api\/basic/, `/api/${API_VERSION}/base`)
        },
        "/api/sys": {
          target: baseApi,
          changeOrigin: true,
          rewrite: (p) => p.replace(/^\/api\/sys/, `/api/${API_VERSION}/sys`)
        },
        "/api/attachment": {
          target: baseApi,
          changeOrigin: true,
          rewrite: (p) => p.replace(/^\/api\/attachment/, `/api/${API_VERSION}/attachment`)
        }
      }
    },
    //去除控制台打印
    esbuild: {
      drop: ["console", "debugger"]
    },
    //CSS配置
    css: {
      postcss: {
        plugins: [
          {
            postcssPlugin: "internal:charset-removal",
            AtRule: {
              charset: (atRule) => {
                if (atRule.name === "charset") {
                  atRule.remove();
                }
              }
            }
          }
        ]
      }
    },
    // 添加 define 配置项，定义 Vue 特性标志
    define: {
      __VUE_OPTIONS_API__: true,
      // 如果使用 Options API，则设为 true
      __VUE_PROD_DEVTOOLS__: false,
      // 如果希望在生产中禁用 Vue 开发者工具
      __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: false
      // 解决提示中的特性标志
    },
    build: {
      target: "esnext"
      // 让 Vite 构建支持 top-level await
    }
  };
});
export {
  vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcuanMiLCAidml0ZS9wbHVnaW5zL2luZGV4LmpzIiwgInZpdGUvcGx1Z2lucy9hdXRvLWltcG9ydC5qcyIsICJ2aXRlL3BsdWdpbnMvc3ZnLWljb24uanMiLCAidml0ZS9wbHVnaW5zL2NvbXByZXNzaW9uLmpzIiwgInZpdGUvcGx1Z2lucy9zZXR1cC1leHRlbmQuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFxwcm9qZWN0XFxcXHdlYlxcXFxhc2gtZml4ZWQtYXNzZXRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxwcm9qZWN0XFxcXHdlYlxcXFxhc2gtZml4ZWQtYXNzZXRzXFxcXHZpdGUuY29uZmlnLmpzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi9wcm9qZWN0L3dlYi9hc2gtZml4ZWQtYXNzZXRzL3ZpdGUuY29uZmlnLmpzXCI7aW1wb3J0IHsgZGVmaW5lQ29uZmlnLCBsb2FkRW52IH0gZnJvbSAndml0ZSdcclxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcclxuaW1wb3J0IGNyZWF0ZVZpdGVQbHVnaW5zIGZyb20gJy4vdml0ZS9wbHVnaW5zJ1xyXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnXHJcblxyXG5pbXBvcnQgZnMgZnJvbSAnZnMnXHJcbi8vIFx1OEJGQlx1NTNENiBnbG9iYWxDb25maWcuanNvblxyXG5mdW5jdGlvbiBsb2FkR2xvYmFsQ29uZmlnKCkge1xyXG4gIGNvbnN0IGNvbmZpZ1BhdGggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi9wdWJsaWMvZ2xvYmFsQ29uZmlnLmpzb24nKVxyXG4gIGNvbnNvbGUubG9nKCdjb25maWdQYXRoJywgY29uZmlnUGF0aClcclxuICB0cnkge1xyXG4gICAgY29uc3QgcmF3RGF0YSA9IGZzLnJlYWRGaWxlU3luYyhjb25maWdQYXRoLCAndXRmLTgnKVxyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmF3RGF0YSlcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgY29uc29sZS5lcnJvcignXHUyNzRDIFx1OEJGQlx1NTNENiBnbG9iYWxDb25maWcuanNvbiBcdTU5MzFcdThEMjVcdUZGMENcdTRGN0ZcdTc1MjhcdTlFRDhcdThCQTRcdTkxNERcdTdGNkU6JywgZXJyb3IpXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBFTlY6ICdkZXZlbG9wbWVudCcsXHJcbiAgICAgIGVudmlyb25tZW50czoge1xyXG4gICAgICAgIGRldmVsb3BtZW50OiB7XHJcbiAgICAgICAgICB0aXRsZTogJ1x1NTZGQVx1NUI5QVx1OEQ0NFx1NEVBN1x1N0JBMVx1NzQwNlx1N0NGQlx1N0VERicsXHJcbiAgICAgICAgICBiYXNlOiAnL2FwaScsXHJcbiAgICAgICAgICBiYXNlQXBpOiAnaHR0cDovLzE5Mi4xNjguMS45OToxOTk5MCcsXHJcbiAgICAgICAgICBiYXNlQXBpMDI6ICdodHRwOi8vMTkyLjE2OC4xLjI0MDo4MDA1JyxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoKHsgbW9kZSwgY29tbWFuZCB9KSA9PiB7XHJcbiAgY29uc3QgQVBQX0NPTkZJRyA9IGxvYWRHbG9iYWxDb25maWcoKVxyXG4gIGNvbnN0IHsgYmFzZUFwaSwgYmFzZUFwaTAyIH0gPSBBUFBfQ09ORklHLmVudmlyb25tZW50c1tBUFBfQ09ORklHLkVOVl1cclxuICBjb25zb2xlLmxvZygnYmFzZUFwaScsIGJhc2VBcGkpXHJcbiAgY29uc29sZS5sb2coJ2Jhc2VBcGkwMicsIGJhc2VBcGkwMilcclxuICAvL2xvYWRFbnYgXHU1MkEwXHU4RjdEXHU3M0FGXHU1ODgzXHU1M0Q4XHU5MUNGXHJcbiAgLy8gXHU4QkU1cHJvY2Vzcy5jd2QoKVx1NjVCOVx1NkNENVx1OEZENFx1NTZERSBOb2RlLmpzIFx1OEZEQlx1N0EwQlx1NzY4NFx1NUY1M1x1NTI0RFx1NURFNVx1NEY1Q1x1NzZFRVx1NUY1NVx1MzAwMlxyXG4gIGNvbnN0IGVudiA9IGxvYWRFbnYobW9kZSwgcHJvY2Vzcy5jd2QoKSlcclxuICBjb25zdCB7IFZJVEVfQVBQX0VOViB9ID0gZW52XHJcbiAgY29uc3QgQVBJX1ZFUlNJT04gPSBlbnYuVklURV9BUFBfVkVSU0lPTiB8fCAnJ1xyXG5cclxuICByZXR1cm4ge1xyXG4gICAgYmFzZTogVklURV9BUFBfRU5WID09PSAncHJvZHVjdGlvbicgPyAnLycgOiAnLycsXHJcbiAgICBwbHVnaW5zOiBjcmVhdGVWaXRlUGx1Z2lucyhlbnYsIGNvbW1hbmQgPT09ICdidWlsZCcpLCAvL1x1NEY3Rlx1NzUyOFx1NjNEMlx1NEVGNlx1RkYwQ1x1NjI2N1x1ODg0Q1x1NTQ3RFx1NEVFNFx1NEUzQWJ1aWxkXHJcbiAgICAvL1x1OERFRlx1NUY4NFx1ODlFM1x1Njc5MFxyXG4gICAgcmVzb2x2ZToge1xyXG4gICAgICBhbGlhczoge1xyXG4gICAgICAgIC8vIFx1OEJCRVx1N0Y2RVx1OERFRlx1NUY4NCB+IFx1NjMwN1x1NTQxMVx1OTg3OVx1NzZFRVx1NjgzOVx1NzZFRVx1NUY1NVx1RkYwQ0AgXHU2MzA3XHU1NDExIHNyYyBcdTc2RUVcdTVGNTVcdTMwMDJcclxuICAgICAgICAnfic6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLycpLFxyXG4gICAgICAgIC8vIFx1OEJCRVx1N0Y2RVx1NTIyQlx1NTQwRFxyXG4gICAgICAgICdAJzogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vc3JjJyksXHJcbiAgICAgIH0sXHJcbiAgICAgIC8vIGh0dHBzOi8vY24udml0ZWpzLmRldi9jb25maWcvI3Jlc29sdmUtZXh0ZW5zaW9uc1xyXG4gICAgICBleHRlbnNpb25zOiBbJy5tanMnLCAnLmpzJywgJy50cycsICcuanN4JywgJy50c3gnLCAnLmpzb24nLCAnLnZ1ZSddLCAvL1x1NUI5QVx1NEU0OVx1NjU4N1x1NEVGNlx1NjI2OVx1NUM1NVx1NTQwRFx1RkYwQ1x1NTcyOFx1NUJGQ1x1NTE2NVx1NkEyMVx1NTc1N1x1NjVGNlx1NTNFRlx1NEVFNVx1NzcwMVx1NzU2NVx1OEZEOVx1NEU5Qlx1NjI2OVx1NUM1NVx1NTQwRFx1MzAwMlxyXG4gICAgfSxcclxuICAgIHNlcnZlcjoge1xyXG4gICAgICBwb3J0OiA5OTAwLFxyXG4gICAgICBob3N0OiB0cnVlLCAvL1x1NTQyNlx1N0VEMVx1NUI5QVx1NjcyQ1x1NTczMFx1NjI0MFx1NjcwOSBJUCBcdTU3MzBcdTU3NDBcclxuICAgICAgb3BlbjogdHJ1ZSxcclxuICAgICAgaG1yOiB0cnVlLFxyXG4gICAgICBwcm94eToge1xyXG4gICAgICAgICcvYXBpL0ludGVyZmFjZSc6IHtcclxuICAgICAgICAgIHRhcmdldDogYmFzZUFwaTAyLFxyXG4gICAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgICAgcmV3cml0ZTogKHApID0+IHAucmVwbGFjZSgvXlxcL2FwaVxcL0ludGVyZmFjZS8sICcvYXBpL0ludGVyZmFjZScpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgJy9hcGkvYmFzaWMnOiB7XHJcbiAgICAgICAgICAvL1x1NjVCMFx1NzI0OFx1NTE2Q1x1NTE3MVx1OEJGN1x1NkM0Mlx1NTczMFx1NTc0MFxyXG4gICAgICAgICAgdGFyZ2V0OiBiYXNlQXBpLFxyXG4gICAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgICAgLy8gbG9nTGV2ZWw6ICdkZWJ1ZycsXHJcbiAgICAgICAgICByZXdyaXRlOiAocCkgPT5cclxuICAgICAgICAgICAgcC5yZXBsYWNlKC9eXFwvYXBpXFwvYmFzaWMvLCBgL2FwaS8ke0FQSV9WRVJTSU9OfS9iYXNlYCksXHJcbiAgICAgICAgfSxcclxuICAgICAgICAnL2FwaS9zeXMnOiB7XHJcbiAgICAgICAgICB0YXJnZXQ6IGJhc2VBcGksXHJcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgICByZXdyaXRlOiAocCkgPT4gcC5yZXBsYWNlKC9eXFwvYXBpXFwvc3lzLywgYC9hcGkvJHtBUElfVkVSU0lPTn0vc3lzYCksXHJcbiAgICAgICAgfSxcclxuICAgICAgICAnL2FwaS9hdHRhY2htZW50Jzoge1xyXG4gICAgICAgICAgdGFyZ2V0OiBiYXNlQXBpLFxyXG4gICAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgICAgcmV3cml0ZTogKHApID0+XHJcbiAgICAgICAgICAgIHAucmVwbGFjZSgvXlxcL2FwaVxcL2F0dGFjaG1lbnQvLCBgL2FwaS8ke0FQSV9WRVJTSU9OfS9hdHRhY2htZW50YCksXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICAvL1x1NTNCQlx1OTY2NFx1NjNBN1x1NTIzNlx1NTNGMFx1NjI1M1x1NTM3MFxyXG4gICAgZXNidWlsZDoge1xyXG4gICAgICBkcm9wOiBbJ2NvbnNvbGUnLCAnZGVidWdnZXInXSxcclxuICAgIH0sXHJcbiAgICAvL0NTU1x1OTE0RFx1N0Y2RVxyXG4gICAgY3NzOiB7XHJcbiAgICAgIHBvc3Rjc3M6IHtcclxuICAgICAgICBwbHVnaW5zOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHBvc3Rjc3NQbHVnaW46ICdpbnRlcm5hbDpjaGFyc2V0LXJlbW92YWwnLFxyXG4gICAgICAgICAgICBBdFJ1bGU6IHtcclxuICAgICAgICAgICAgICBjaGFyc2V0OiAoYXRSdWxlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXRSdWxlLm5hbWUgPT09ICdjaGFyc2V0Jykge1xyXG4gICAgICAgICAgICAgICAgICBhdFJ1bGUucmVtb3ZlKClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIC8vIFx1NkRGQlx1NTJBMCBkZWZpbmUgXHU5MTREXHU3RjZFXHU5ODc5XHVGRjBDXHU1QjlBXHU0RTQ5IFZ1ZSBcdTcyNzlcdTYwMjdcdTY4MDdcdTVGRDdcclxuICAgIGRlZmluZToge1xyXG4gICAgICBfX1ZVRV9PUFRJT05TX0FQSV9fOiB0cnVlLCAvLyBcdTU5ODJcdTY3OUNcdTRGN0ZcdTc1MjggT3B0aW9ucyBBUElcdUZGMENcdTUyMTlcdThCQkVcdTRFM0EgdHJ1ZVxyXG4gICAgICBfX1ZVRV9QUk9EX0RFVlRPT0xTX186IGZhbHNlLCAvLyBcdTU5ODJcdTY3OUNcdTVFMENcdTY3MUJcdTU3MjhcdTc1MUZcdTRFQTdcdTRFMkRcdTc5ODFcdTc1MjggVnVlIFx1NUYwMFx1NTNEMVx1ODAwNVx1NURFNVx1NTE3N1xyXG4gICAgICBfX1ZVRV9QUk9EX0hZRFJBVElPTl9NSVNNQVRDSF9ERVRBSUxTX186IGZhbHNlLCAvLyBcdTg5RTNcdTUxQjNcdTYzRDBcdTc5M0FcdTRFMkRcdTc2ODRcdTcyNzlcdTYwMjdcdTY4MDdcdTVGRDdcclxuICAgIH0sXHJcbiAgICBidWlsZDoge1xyXG4gICAgICB0YXJnZXQ6ICdlc25leHQnLCAvLyBcdThCQTkgVml0ZSBcdTY3ODRcdTVFRkFcdTY1MkZcdTYzMDEgdG9wLWxldmVsIGF3YWl0XHJcbiAgICB9LFxyXG4gIH1cclxufSlcclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFxwcm9qZWN0XFxcXHdlYlxcXFxhc2gtZml4ZWQtYXNzZXRzXFxcXHZpdGVcXFxccGx1Z2luc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxccHJvamVjdFxcXFx3ZWJcXFxcYXNoLWZpeGVkLWFzc2V0c1xcXFx2aXRlXFxcXHBsdWdpbnNcXFxcaW5kZXguanNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L3Byb2plY3Qvd2ViL2FzaC1maXhlZC1hc3NldHMvdml0ZS9wbHVnaW5zL2luZGV4LmpzXCI7aW1wb3J0IHZ1ZSBmcm9tICdAdml0ZWpzL3BsdWdpbi12dWUnXHJcblxyXG5pbXBvcnQgY3JlYXRlQXV0b0ltcG9ydCBmcm9tICcuL2F1dG8taW1wb3J0J1xyXG5pbXBvcnQgY3JlYXRlU3ZnSWNvbiBmcm9tICcuL3N2Zy1pY29uJ1xyXG5pbXBvcnQgY3JlYXRlQ29tcHJlc3Npb24gZnJvbSAnLi9jb21wcmVzc2lvbidcclxuaW1wb3J0IGNyZWF0ZVNldHVwRXh0ZW5kIGZyb20gJy4vc2V0dXAtZXh0ZW5kJ1xyXG4vL2lzQnVpbGQ6IFx1NUUwM1x1NUMxNFx1NTAzQ1x1RkYwQ1x1ODg2OFx1NzkzQVx1NUY1M1x1NTI0RFx1NTQ3RFx1NEVFNFx1NjYyRlx1NTQyNlx1NEUzQVx1Njc4NFx1NUVGQVx1RkYwOFx1NzUxRlx1NEVBN1x1RkYwOVx1NkEyMVx1NUYwRlx1MzAwMlx1OUVEOFx1OEJBNFx1NEUzQSBmYWxzZVx1RkYwOFx1NUYwMFx1NTNEMVx1NkEyMVx1NUYwRlx1RkYwOVxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVWaXRlUGx1Z2lucyh2aXRlRW52LCBpc0J1aWxkID0gdHJ1ZSkge1xyXG4gIGNvbnN0IHZpdGVQbHVnaW5zID0gW3Z1ZSgpXSAvL1x1NTIxRFx1NTlDQlx1NTMxNlx1NjNEMlx1NEVGNlx1NjU3MFx1N0VDNFx1RkYwQ1x1NUU3Nlx1NkRGQlx1NTJBMCBWdWUgXHU2M0QyXHU0RUY2XHJcbiAgdml0ZVBsdWdpbnMucHVzaChjcmVhdGVBdXRvSW1wb3J0KCkpXHJcbiAgdml0ZVBsdWdpbnMucHVzaChjcmVhdGVTZXR1cEV4dGVuZCgpKVxyXG4gIHZpdGVQbHVnaW5zLnB1c2goY3JlYXRlU3ZnSWNvbihpc0J1aWxkKSlcclxuICAvL1x1NTk4Mlx1Njc5Q1x1NUY1M1x1NTI0RFx1NjYyRlx1Njc4NFx1NUVGQVx1NkEyMVx1NUYwRlx1RkYwQ1x1OEMwM1x1NzUyOCBjcmVhdGVDb21wcmVzc2lvbiBcdTUxRkRcdTY1NzBcdTVFNzZcdTVDMDZcdTUxNzZcdThGRDRcdTU2REVcdTc2ODRcdTYzRDJcdTRFRjZcdTZERkJcdTUyQTBcdTUyMzBcdTYzRDJcdTRFRjZcdTY1NzBcdTdFQzRcdTRFMkRcdTMwMDJcdTRGMjBcdTUxNjUgdml0ZUVudiBcdTRFRTVcdTRGQkZcdTU3MjhcdTRFMERcdTU0MENcdTc2ODRcdTczQUZcdTU4ODNcdTRFMEJcdThGREJcdTg4NENcdTc2RjhcdTVFOTRcdTc2ODRcdTkxNERcdTdGNkVcdTMwMDJcclxuICBpc0J1aWxkICYmIHZpdGVQbHVnaW5zLnB1c2goLi4uY3JlYXRlQ29tcHJlc3Npb24odml0ZUVudikpXHJcbiAgcmV0dXJuIHZpdGVQbHVnaW5zXHJcbn1cclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFxwcm9qZWN0XFxcXHdlYlxcXFxhc2gtZml4ZWQtYXNzZXRzXFxcXHZpdGVcXFxccGx1Z2luc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxccHJvamVjdFxcXFx3ZWJcXFxcYXNoLWZpeGVkLWFzc2V0c1xcXFx2aXRlXFxcXHBsdWdpbnNcXFxcYXV0by1pbXBvcnQuanNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L3Byb2plY3Qvd2ViL2FzaC1maXhlZC1hc3NldHMvdml0ZS9wbHVnaW5zL2F1dG8taW1wb3J0LmpzXCI7LyogIHVucGx1Z2luLWF1dG8taW1wb3J0XHU2M0QyXHU0RUY2Olx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NVx1NEY5RFx1OEQ1NiBcdTU5MUFcdTc5Q0RcdTY3ODRcdTVFRkFcdTVERTVcdTUxNzdcdTRFMkRcdTRGN0ZcdTc1MjhcclxuICogIC92aXRlIFx1NTQwRVx1N0YwMFx1ODg2OFx1NzkzQVx1OEZEOVx1NjYyRlx1NEUzQSBWaXRlIFx1NjNEMFx1NEY5Qlx1NzY4NFx1OTAwMlx1OTE0RFx1NTY2OFx1NzI0OFx1NjcyQ1x1MzAwMlxyXG4gKiAgV2VicGFjazogXHU0RjdGXHU3NTI4IHVucGx1Z2luLWF1dG8taW1wb3J0L3dlYnBhY2tcclxuICogIFJvbGx1cDogXHU0RjdGXHU3NTI4IHVucGx1Z2luLWF1dG8taW1wb3J0L3JvbGx1cFxyXG4gKiAgRVNCdWlsZDogXHU0RjdGXHU3NTI4IHVucGx1Z2luLWF1dG8taW1wb3J0L2VzYnVpbGRcclxuICoqL1xyXG5pbXBvcnQgYXV0b0ltcG9ydCBmcm9tICd1bnBsdWdpbi1hdXRvLWltcG9ydC92aXRlJ1xyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVBdXRvSW1wb3J0KCkge1xyXG4gIHJldHVybiBhdXRvSW1wb3J0KHtcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgLy9cdTk3MDBcdTg5ODFcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjVcdTc2ODRcdTVFOTNcclxuICAgICAgJ3Z1ZScsIC8vIFx1NEY4Qlx1NTk4MnJlZlx1MzAwMXJlYWN0aXZlXHUzMDAxY29tcHV0ZWRcdUZGMENcdTRFMERcdTVCRkNcdTUxNjVcdTc2RjRcdTYzQTVcdTRGN0ZcdTc1Mjhjb25zdCBhPXJlZignMXNkJylcclxuICAgICAgJ3Z1ZS1yb3V0ZXInLCAvL1x1NEY4Qlx1NTk4MiB1c2VSb3V0ZXJcdTMwMDF1c2VSb3V0ZSAgXHU0RTBEXHU1QkZDXHU1MTY1XHU3NkY0XHU2M0E1XHU0RjdGXHU3NTI4IGNvbnN0IHJvdXRlciA9IHVzZVJvdXRlcigpXHJcbiAgICAgICdwaW5pYScsIC8vXHU0RjhCXHU1OTgyIGRlZmluZVN0b3JlXHUzMDAxdXNlU3RvcmUgICBcdTRFMERcdTVCRkNcdTUxNjVcdTc2RjRcdTYzQTVcdTRGN0ZcdTc1MjggY29uc3Qgc3RvcmUgPSB1c2VTdG9yZSgpXHJcbiAgICBdLFxyXG4gICAgZHRzOiBmYWxzZSwgLy9kdHNcdUZGMUFcdTkxNERcdTdGNkVcdTY2MkZcdTU0MjZcdTc1MUZcdTYyMTAgVHlwZVNjcmlwdCBcdTc2ODRcdTU4RjBcdTY2MEVcdTY1ODdcdTRFRjYsZmFsc2UtLS1cdTRFMERcdTc1MUZcdTYyMTBcclxuICB9KVxyXG59XHJcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxccHJvamVjdFxcXFx3ZWJcXFxcYXNoLWZpeGVkLWFzc2V0c1xcXFx2aXRlXFxcXHBsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXHByb2plY3RcXFxcd2ViXFxcXGFzaC1maXhlZC1hc3NldHNcXFxcdml0ZVxcXFxwbHVnaW5zXFxcXHN2Zy1pY29uLmpzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi9wcm9qZWN0L3dlYi9hc2gtZml4ZWQtYXNzZXRzL3ZpdGUvcGx1Z2lucy9zdmctaWNvbi5qc1wiO2ltcG9ydCB7IGNyZWF0ZVN2Z0ljb25zUGx1Z2luIH0gZnJvbSAndml0ZS1wbHVnaW4tc3ZnLWljb25zJyAvL3ZpdGVcdTYzRDJcdTRFRjYtLVx1NjYzRVx1NzkzQVx1NjcyQ1x1NTczMHN2Z1x1NTZGRVx1NjgwN1xyXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlU3ZnSWNvbihpc0J1aWxkKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZVN2Z0ljb25zUGx1Z2luKHtcclxuICAgIGljb25EaXJzOiBbcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksICdzcmMvYXNzZXRzL2ljb25zL3N2ZycpXSxcclxuICAgIHN5bWJvbElkOiAnaWNvbi1bZGlyXS1bbmFtZV0nLCAvL1x1NjMwN1x1NUI5QXN5bWJvbElkXHU2ODNDXHU1RjBGICwgIC9zcmMvY29tcG9uZW50cy9TdmdJY29uLnZ1ZSAgIDp4bGluazpocmVmPVwic3ltYm9sSWRcIlx1NEY3Rlx1NzUyOFxyXG4gIH0pXHJcbn1cclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFxwcm9qZWN0XFxcXHdlYlxcXFxhc2gtZml4ZWQtYXNzZXRzXFxcXHZpdGVcXFxccGx1Z2luc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxccHJvamVjdFxcXFx3ZWJcXFxcYXNoLWZpeGVkLWFzc2V0c1xcXFx2aXRlXFxcXHBsdWdpbnNcXFxcY29tcHJlc3Npb24uanNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L3Byb2plY3Qvd2ViL2FzaC1maXhlZC1hc3NldHMvdml0ZS9wbHVnaW5zL2NvbXByZXNzaW9uLmpzXCI7aW1wb3J0IGNvbXByZXNzaW9uIGZyb20gJ3ZpdGUtcGx1Z2luLWNvbXByZXNzaW9uJyAvL1x1NTM4Qlx1N0YyOVx1Njc4NFx1NUVGQVx1OEY5M1x1NTFGQVx1NjU4N1x1NEVGNlxyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlQ29tcHJlc3Npb24oZW52KSB7XHJcbiAgY29uc3QgeyBWSVRFX0JVSUxEX0NPTVBSRVNTIH0gPSBlbnYgLy8gZW52IFx1NUJGOVx1OEM2MVx1NEUyRFx1NjNEMFx1NTNENiBWSVRFX0JVSUxEX0NPTVBSRVNTICBcdTczQUZcdTU4ODNcdTUzRDhcdTkxQ0ZcclxuICBjb25zdCBwbHVnaW4gPSBbXSAvL1x1NTIxRFx1NTlDQlx1NTMxNlx1NEUwMFx1NEUyQVx1N0E3QVx1NjU3MFx1N0VDNFx1RkYwQ1x1NzUyOFx1NEU4RVx1NUI1OFx1NTBBOFx1ODk4MVx1NEY3Rlx1NzUyOFx1NzY4NFx1NjNEMlx1NEVGNlxyXG4gIC8vXHU1OTgyXHU2NzlDXHU1QjU4XHU1NzI4XHJcbiAgaWYgKFZJVEVfQlVJTERfQ09NUFJFU1MpIHtcclxuICAgIGNvbnN0IGNvbXByZXNzTGlzdCA9IFZJVEVfQlVJTERfQ09NUFJFU1Muc3BsaXQoJywnKSAvL1x1NTkwNFx1NzQwNlx1NTM4Qlx1N0YyOVx1N0M3Qlx1NTc4QlxyXG4gICAgaWYgKGNvbXByZXNzTGlzdC5pbmNsdWRlcygnZ3ppcCcpKSB7XHJcbiAgICAgIC8vIFx1NTk4Mlx1Njc5Q1x1NzNBRlx1NTg4M1x1NTNEOFx1OTFDRlx1NEUyRFx1NTMwNVx1NTQyQiAnZ3ppcCdcdUZGMENcdTUyMTlcdTZERkJcdTUyQTAgZ3ppcCBcdTUzOEJcdTdGMjlcdTYzRDJcdTRFRjZcclxuICAgICAgLy8gaHR0cDovL2RvYy5ydW95aS52aXAvcnVveWktdnVlL290aGVyL2ZhcS5odG1sI1x1NEY3Rlx1NzUyOGd6aXBcdTg5RTNcdTUzOEJcdTdGMjlcdTk3NTlcdTYwMDFcdTY1ODdcdTRFRjZcclxuICAgICAgcGx1Z2luLnB1c2goXHJcbiAgICAgICAgY29tcHJlc3Npb24oe1xyXG4gICAgICAgICAgZXh0OiAnLmd6JywgLy9cdTg4NjhcdTc5M0FcdTc1MUZcdTYyMTBcdTc2ODRcdTY1ODdcdTRFRjZcdTYyNjlcdTVDNTVcdTU0MERcdTRFM0EgLmd6XHJcbiAgICAgICAgICBkZWxldGVPcmlnaW5GaWxlOiBmYWxzZSwgLy9cdTRFMERcdTUyMjBcdTk2NjRcdTUzOUZcdTU5Q0JcdTY1ODdcdTRFRjZcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgICAvKiAgXHU1OTgyXHU2NzlDIGNvbXByZXNzTGlzdCBcdTUzMDVcdTU0MkIgJ2Jyb3RsaSdcdUZGMENcclxuICAgICAqICBcdTUyMTlcdTZERkJcdTUyQTAgYnJvdGxpIFx1NTM4Qlx1N0YyOVx1NjNEMlx1NEVGNlx1NTIzMCBwbHVnaW4gXHU2NTcwXHU3RUM0XHU0RTJEXHUzMDAyXHJcbiAgICAgKiAgZXh0OiAnLmJyJyBcdTg4NjhcdTc5M0FcdTc1MUZcdTYyMTBcdTc2ODRcdTY1ODdcdTRFRjZcdTYyNjlcdTVDNTVcdTU0MERcdTRFM0EgLmJyXHVGRjBDXHJcbiAgICAgKiAgYWxnb3JpdGhtOiAnYnJvdGxpQ29tcHJlc3MnIFx1NjMwN1x1NUI5QVx1NEY3Rlx1NzUyOCBicm90bGkgXHU1MzhCXHU3RjI5XHU3Qjk3XHU2Q0Q1XHUzMDAyXHJcbiAgICAgKiovXHJcbiAgICBpZiAoY29tcHJlc3NMaXN0LmluY2x1ZGVzKCdicm90bGknKSkge1xyXG4gICAgICBwbHVnaW4ucHVzaChcclxuICAgICAgICBjb21wcmVzc2lvbih7XHJcbiAgICAgICAgICBleHQ6ICcuYnInLFxyXG4gICAgICAgICAgYWxnb3JpdGhtOiAnYnJvdGxpQ29tcHJlc3MnLFxyXG4gICAgICAgICAgZGVsZXRlT3JpZ2luRmlsZTogZmFsc2UsXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuICAvL3JldHVyblx1NTFGQVx1NTNCQi0tXHU1MzA1XHU1NDJCXHU5MTREXHU3RjZFXHU1OTdEXHU1MzhCXHU3RjI5XHU2M0QyXHU0RUY2XHU3Njg0XHU2NTcwXHU3RUM0XHJcbiAgcmV0dXJuIHBsdWdpblxyXG59XHJcblxyXG4vL1x1MzAwMVx1MzAwMVx1MzAwMVx1MzAwMVx1MzAwMXZpdGVcdTRGN0ZcdTc1MjhcdTMwMDFcdTMwMDFcdTMwMDFcdTMwMDFcdTMwMDFcdTMwMDFcclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFxwcm9qZWN0XFxcXHdlYlxcXFxhc2gtZml4ZWQtYXNzZXRzXFxcXHZpdGVcXFxccGx1Z2luc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRDpcXFxccHJvamVjdFxcXFx3ZWJcXFxcYXNoLWZpeGVkLWFzc2V0c1xcXFx2aXRlXFxcXHBsdWdpbnNcXFxcc2V0dXAtZXh0ZW5kLmpzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi9wcm9qZWN0L3dlYi9hc2gtZml4ZWQtYXNzZXRzL3ZpdGUvcGx1Z2lucy9zZXR1cC1leHRlbmQuanNcIjsvKiAgIFZ1ZSAzIFx1NEUyRFx1NTg5RVx1NUYzQSA8c2NyaXB0IHNldHVwPiBcdThCRURcdTZDRDVcclxuICogICBcdTRGN0ZcdTUxNzZcdTY1MkZcdTYzMDFcdTU3Mjggc2V0dXAgXHU1NzU3XHU0RTJEXHU1QjlBXHU0RTQ5XHU3RUM0XHU0RUY2XHU3Njg0XHU1NDBEXHU3OUYwXHU1NDhDXHU1MTc2XHU0RUQ2XHU5MDA5XHU5ODc5XHUzMDAyXHJcbiAqICAgXHU4RkQ5XHU1QkY5XHU0RThFXHU1NzI4IDxzY3JpcHQgc2V0dXA+IFx1OEJFRFx1NkNENVx1NEUyRFx1NEY3Rlx1NzUyOCBuYW1lIFx1NUM1RVx1NjAyN1x1NUI5QVx1NEU0OVx1N0VDNFx1NEVGNlx1NTQwRFx1NzlGMFx1N0I0OVx1NTI5Rlx1ODBGRFx1OTc1RVx1NUUzOFx1NjcwOVx1NzUyOFx1MzAwMlxyXG4gKiovXHJcbmltcG9ydCBzZXR1cEV4dGVuZCBmcm9tICd1bnBsdWdpbi12dWUtc2V0dXAtZXh0ZW5kLXBsdXMvdml0ZSdcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVNldHVwRXh0ZW5kKCkge1xyXG4gIHJldHVybiBzZXR1cEV4dGVuZCh7fSlcclxufVxyXG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQXVSLFNBQVMsY0FBYyxlQUFlO0FBQzdULE9BQU9BLFdBQVU7OztBQ0RxUyxPQUFPLFNBQVM7OztBQ010VSxPQUFPLGdCQUFnQjtBQUNSLFNBQVIsbUJBQW9DO0FBQ3pDLFNBQU8sV0FBVztBQUFBLElBQ2hCLFNBQVM7QUFBQTtBQUFBLE1BRVA7QUFBQTtBQUFBLE1BQ0E7QUFBQTtBQUFBLE1BQ0E7QUFBQTtBQUFBLElBQ0Y7QUFBQSxJQUNBLEtBQUs7QUFBQTtBQUFBLEVBQ1AsQ0FBQztBQUNIOzs7QUNqQjRULFNBQVMsNEJBQTRCO0FBQ2pXLE9BQU8sVUFBVTtBQUVGLFNBQVIsY0FBK0IsU0FBUztBQUM3QyxTQUFPLHFCQUFxQjtBQUFBLElBQzFCLFVBQVUsQ0FBQyxLQUFLLFFB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
